namespace OasisCiq.Xal
{
    using System.Collections.Generic;
    using System.Collections.Specialized;
    using CommonTypes;
    using External;
    using XS;

    /// <summary>
    /// Complex type for internal reuse
    /// </summary>
    public class ThoroughfareType : IDataQualityGroup, IExtendedAttributes
    {
        /// <summary>
        /// If Numbers collection is empty at least one element required
        /// </summary>
        public virtual ICollection<ThoroughfareNameElement> NameElements { get; set; }

        /// <summary>
        /// Data associated with the number of the thoroughfare.
        /// E.g. 39 in 39 Baker Street, street range, street suffix.
        /// If NameElements collection is empty at least one element required
        /// </summary>
        public virtual ICollection<IdentifierType> Numbers { get; set; }

        /// <summary>
        /// Type of thoroughfare. eg. primary road, secondary road, road branch (e.g. Lane 14),
        /// road sub branch (e.g. Alley 21), adjourning street, cross street, closest street, etc
        /// </summary>
        public virtual ThoroughfareTypeList Type { get; set; }

        /// <summary>
        /// Type of code use for thoroughfare
        /// </summary>
        public virtual CTString TypeCode { get; set; }

        public virtual DataQualityTypeList DataQualityType { get; set; }

        public virtual XSDateTime ValidFrom { get; set; }

        public virtual XSDateTime ValidTo { get; set; }

        public virtual NameValueCollection ExtendedAttributes { get; set; }
    }
}